package com.example.designpatternproject.observer;

import android.util.Log;

import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName: Observable
 * @Author: 史大拿
 * @CreateDate: 10/26/22$ 2:14 PM$
 * TODO 被观察者
 */
public abstract class Observable<E, T extends Observer<E>> {
    public List<T> mData;

    public Observable() {
        mData = new ArrayList<>();
    }

    /*
     * 作者:史大拿
     * 创建时间: 10/26/22 2:16 PM
     * TODO 添加观察者
     */
    public abstract void addObserver(T t);

    /*
     * 作者:史大拿
     * 创建时间: 10/26/22 2:17 PM
     * TODO 移除观察者
     */
    public abstract void removeObserver(T t);

    /*
     * 作者:史大拿
     * 创建时间: 10/26/22 2:17 PM
     * TODO 刷新
     */
    public void onChanged(E e) {
        for (T t : mData) {
            Log.i("szjOnChanged", e + "\t" + mData.size());
            t.update(e);
        }
    }
}
